home *** CD-ROM | disk | FTP | other *** search
/ Revista do CD-ROM 101 / CD-ROM 101.iso / compl / maya5ple / Install_MayaPLE5_English.exe / Maya / Data1.cab / createMayaSoftwareGlobalsTab < prev    next >
Encoding:
Text File  |  2003-07-17  |  64.4 KB  |  1,927 lines

  1. // Copyright (C) 1997-2002 Alias|Wavefront,
  2. // a division of Silicon Graphics Limited.
  3. //
  4. // The information in this file is provided for the exclusive use of the
  5. // licensees of Alias|Wavefront.  Such users have the right to use, modify,
  6. // and incorporate this code into other products for purposes authorized
  7. // by the Alias|Wavefront license agreement, without fee.
  8. //
  9. // ALIAS|WAVEFRONT DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
  10. // INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
  11. // EVENT SHALL ALIAS|WAVEFRONT BE LIABLE FOR ANY SPECIAL, INDIRECT OR
  12. // CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
  13. // DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
  14. // TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
  15. // PERFORMANCE OF THIS SOFTWARE.
  16. //
  17. //==================================================================
  18. // MayaSoftware Renderer Tab
  19. //==================================================================
  20. // Description: This procedure is called to create the mayaSoftware
  21. //      tab for the unified render globals window.
  22. //
  23. global proc createMayaSoftwareGlobalsTab()
  24. {
  25.     string $parentForm = `setParent -query`;
  26.     scrollLayout -horizontalScrollBarThickness 0 mayaSoftwareGlobalsScrollLayout;
  27.     columnLayout -adjustableColumn true;
  28.  
  29.     // Anti-aliasing quality section
  30.     //
  31.     frameLayout -label "Anti-aliasing Quality" 
  32.         -cll true -cl 0
  33.         mayaSoftwareQualityFrame;
  34.  
  35.     createRenderQuality ("mayaSoftwareQualityFrame"); 
  36.     setParent ..;
  37.  
  38.     // Field Options
  39.     //
  40.     frameLayout -label "Field Options" 
  41.         -cll true -cl 1
  42.         -preExpandCommand "createFieldOptions (\"rgFieldOptionsFrame\")" 
  43.         rgFieldOptionsFrame;
  44.     setParent ..;            
  45.     
  46.     // Raytracing quality section
  47.     //
  48.     frameLayout -label "Raytracing Quality" 
  49.         -cll true -cl 1
  50.         -preExpandCommand "createRayTraceQuality (\"rgRayTraceFrame\")" 
  51.         rgRayTraceFrame;
  52.     setParent ..;
  53.     
  54.     // Motion Blur
  55.     //
  56.     frameLayout -label "Motion Blur" 
  57.         -cll true -cl 1
  58.         -preExpandCommand "createMotionBlur (\"rgBlurFrame\")" 
  59.         rgBlurFrame;
  60.     setParent ..;            
  61.  
  62.     // Render Options
  63.     //
  64.     frameLayout -label "Render Options"
  65.         -cll true -cl 1
  66.         -preExpandCommand "createRenderOptions (\"rgOptionSoftwareFrame\")" 
  67.         rgOptionSoftwareFrame;
  68.     setParent ..;
  69.  
  70.     // Performance Options
  71.     //
  72.     frameLayout -label "Memory and Performance Options"
  73.         -cll true -cl 1
  74.         -preExpandCommand "createPerformanceOptions (\"rgPerfFrame\")" 
  75.         rgPerfFrame;
  76.     setParent ..;
  77.  
  78.     // IPR Options
  79.     //
  80.     frameLayout -label "IPR Options"
  81.         -cll true -cl 1
  82.         rgIPRFrame;
  83.     createIPROptions("rgIPRFrame"); 
  84.     setParent ..;
  85.  
  86.     // Render Layer/Pass Options
  87.     //
  88.     frameLayout -label "Render Layer/Pass Control"
  89.         -cll true -cl 1
  90.         -preExpandCommand "createRenderLayerOptionsUI (\"rgRenderLayerFrame\",\"mayaSoftware\")"
  91.         rgRenderLayerFrame;
  92.     setParent ..;
  93.  
  94.     if (`isTrue MayaCreatorExists`) {
  95.         // Urchin Options
  96.         frameLayout -label "Paint Effects Rendering Options"
  97.             -cll true -cl 1
  98.             -preExpandCommand "createUrchinOptions (\"rgUrchinFrame\")"
  99.             rgUrchinFrame;
  100.         setParent ..;
  101.     }
  102.  
  103.     setParent ..;
  104.     setParent ..;
  105.  
  106.     formLayout
  107.         -edit
  108.         -af mayaSoftwareGlobalsScrollLayout "top" 0
  109.         -af mayaSoftwareGlobalsScrollLayout "bottom" 0
  110.         -af mayaSoftwareGlobalsScrollLayout "left" 0
  111.         -af mayaSoftwareGlobalsScrollLayout "right" 0
  112.         $parentForm;
  113. }
  114.  
  115. // Description: This procedure is called to create the render quality
  116. //      frame in the maysSoftware tab in the unified render globals 
  117. //      window.
  118. //
  119. global proc createRenderQuality (string $parent) 
  120. //
  121. //  Procedure Name:
  122. //      createRenderQuality
  123. //
  124. //  Description:
  125. //      Creates the UI in the "Anti-aliasing Quality" 
  126. //        expand/collapse section.
  127. //
  128. {
  129.     setUITemplate -pushTemplate attributeEditorTemplate;
  130.  
  131.     setParent $parent;
  132.  
  133.     // If the UI is created already then reset the command with the correct
  134.     // render quality + update the attribute values.
  135.     string $rendQual[] = `listConnections defaultRenderGlobals.qual`;
  136.     if (`columnLayout -exists mayaSoftwareQualityLayout`) {
  137.         updateRenderQuality;
  138.         return;
  139.     }
  140.  
  141.     columnLayout -adjustableColumn true mayaSoftwareQualityLayout;
  142.  
  143.         frameLayout 
  144.             -labelVisible false -borderVisible true 
  145.             -borderStyle "etchedIn"
  146.             -collapsable false -collapse true;
  147.         columnLayout -adjustableColumn true;
  148.         
  149.         optionMenuGrp -label "Quality" qualityPresetMenu;
  150.         optionMenuGrp -edit -cc RGsetDefaultQuality -cw 2 240 qualityPresetMenu;
  151.             
  152.             menuItem -label "Custom" rgCustomQuality;
  153.             menuItem -label "Preview Quality" rgPreviewQuality;
  154.             menuItem -label "Intermediate Quality" rgIntermediateQuality;
  155.             menuItem -label "Production Quality" rgProductionQuality;
  156.             menuItem -label "Contrast Sensitive Production" rgContrastProductionQuality;
  157.             menuItem -label "3D Motion Blur Production" rgMotionBlurQuality;
  158.         
  159.         optionMenuGrp -label "Edge Anti-aliasing" 
  160.             -cc RGsetEdgeQuality edgeMenu;
  161.             
  162.             menuItem -label "Low Quality";
  163.             menuItem -label "Medium Quality";
  164.             menuItem -label "High Quality";
  165.             menuItem -label "Highest Quality";
  166.                         
  167.         setParent ..;
  168.         setParent ..;
  169.  
  170.         frameLayout -label "Number of Samples" 
  171.             -labelVisible true -borderVisible true 
  172.             -borderStyle "etchedIn"
  173.             -labelAlign "center" -labelWidth 150
  174.             -collapsable false -collapse true;
  175.         columnLayout -adjustableColumn true;
  176.         
  177.         string $attr = $rendQual[0]+ ".shadingSamples";
  178.         attrControlGrp -label "Shading"
  179.                 -attribute $attr
  180.                 -cc "updateRenderQuality"
  181.                 shadingSamplesField;
  182.        
  183.         $attr = $rendQual[0]+ ".maxShadingSamples";
  184.         attrControlGrp -label "Max Shading"
  185.                 -attribute $attr
  186.                 -cc "updateRenderQuality"
  187.                 maxShadingSamplesField;
  188.  
  189.         $attr = $rendQual[0]+ ".visibilitySamples";
  190.         attrControlGrp -label "3D Blur Visib."
  191.                 -attribute $attr
  192.                 -cc "updateRenderQuality"
  193.                 visSamplesField;
  194.  
  195.         $attr = $rendQual[0]+ ".maxVisibilitySamples";
  196.         attrControlGrp -label "Max 3D Blur Visib."
  197.                 -attribute $attr
  198.                 -cc "updateRenderQuality"
  199.                 maxVisSamplesField;
  200.         
  201.         $attr = $rendQual[0]+ ".particleSamples";
  202.         attrControlGrp -label "Particles"
  203.                 -attribute $attr
  204.                 -cc "updateRenderQuality"
  205.                 particlesSamplesField;
  206.  
  207.         setParent ..;
  208.         setParent ..;
  209.  
  210.         frameLayout -label "Multi-pixel Filtering" 
  211.             -labelVisible true -borderVisible true 
  212.             -borderStyle "etchedIn"
  213.             -labelAlign "center" -labelWidth 150
  214.             -collapsable false -collapse true;
  215.         columnLayout -adjustableColumn true;
  216.  
  217.         $attr = $rendQual[0]+ ".useMultiPixelFilter";
  218.         attrControlGrp -label "Use Multi Pixel Filter"
  219.                 -attribute $attr
  220.                 -cc "updateRenderQuality"
  221.                 pixelCheck;
  222.         
  223.             optionMenuGrp -label "Pixel Filter Type" 
  224.                 -cc "RGsetPixelFilterType" pixelFilterMenu;
  225.             
  226.                 menuItem -label "Box Filter";
  227.                 menuItem -label "Triangle Filter";
  228.                 menuItem -label "Gaussian Filter";
  229.                 menuItem -label "Quadratic B-Spline Filter";
  230.                 menuItem -label "Plug-in Filter";
  231.         
  232.         $attr = $rendQual[0]+ ".pixelFilterWidthX";
  233.         attrControlGrp -label "Pixel Filter Width X"
  234.                 -attribute $attr
  235.                 filterXField;
  236.         
  237.         $attr = $rendQual[0]+ ".pixelFilterWidthY";
  238.         attrControlGrp -label "Pixel Filter Width Y"
  239.                 -attribute $attr
  240.                 filterYField;
  241.        
  242.         setParent ..;
  243.         setParent ..;
  244.         
  245.  
  246.         frameLayout -label "Contrast Threshold" 
  247.             -labelVisible true -borderVisible true 
  248.             -borderStyle "etchedIn"
  249.             -labelAlign "center" -labelWidth 150
  250.             -collapsable false -collapse true;
  251.         columnLayout -adjustableColumn true;
  252.         
  253.         $attr = $rendQual[0]+ ".redThreshold";
  254.         attrControlGrp -label "Red"
  255.                 -attribute $attr
  256.                 -cc "updateRenderQuality"
  257.                 contrastRedField;
  258.         
  259.         $attr = $rendQual[0]+ ".greenThreshold";
  260.         attrControlGrp -label "Green"
  261.                 -attribute  $attr
  262.                 -cc "updateRenderQuality"
  263.                 contrastGreenField;
  264.         
  265.         $attr = $rendQual[0]+ ".blueThreshold";
  266.         attrControlGrp -label "Blue"
  267.                 -attribute $attr 
  268.                 -cc "updateRenderQuality"
  269.                 contrastBlueField;
  270.         
  271.         $attr = $rendQual[0]+ ".coverageThreshold";
  272.         attrControlGrp -label "Coverage"
  273.                 -attribute $attr
  274.                 -cc "updateRenderQuality"
  275.                 contrastCoverField;
  276.                         
  277.         setParent ..;
  278.         setParent ..;
  279.  
  280.     setParent ..;
  281.     setUITemplate -popTemplate;
  282.  
  283.     // Make sure the values are right
  284.     //
  285.     updateRenderQuality;
  286. }
  287.  
  288. // Description: This procedure is called to create the field options 
  289. //      frame in the maysSoftware tab in the unified render globals 
  290. //      window.
  291. //
  292. global proc createFieldOptions (string $parent) 
  293. //
  294. //  Procedure Name:
  295. //      createFieldOptions
  296. //
  297. //  Description:
  298. //      Creates the UI in the "Field Options" expand/collapse section.
  299. //
  300. {
  301.     setUITemplate -pushTemplate attributeEditorTemplate;
  302.  
  303.     setParent $parent;
  304.  
  305.     // If the UI is created already then just update the attribute values.
  306.     //
  307.     if (`columnLayout -exists rgFieldLayout`) {
  308.         updateFieldOptions;
  309.         return;
  310.     }
  311.  
  312.     columnLayout -adjustableColumn true rgFieldLayout;
  313.  
  314.         optionMenuGrp -label "Render" -cc changeFieldOptions fieldMenu;
  315.             menuItem -label "Frames";
  316.             menuItem -label "Both Fields, Interlaced";
  317.             menuItem -label "Both Fields, Separate";
  318.             menuItem -label "Odd Fields";
  319.             menuItem -label "Even Fields";
  320.         scriptJob -p $parent 
  321.             -ac "defaultResolution.fields" 
  322.             "updateFieldOptions;";
  323.         
  324.         optionMenuGrp -label "Field Dominance" 
  325.             -cc "changeFieldOptions" fieldDominanceMenu;
  326.         menuItem -label "Odd Field (NTSC)" rgOddField;
  327.         menuItem -label "Even Field (PAL)" rgEvenField;
  328.  
  329.         radioButtonGrp -numberOfRadioButtons 2
  330.             -label "Zeroth Scanline"
  331.             -label1 "At Top" 
  332.             -label2 "At Bottom" 
  333.             -on1 "setAttr defaultResolution.zerothScanline 0"
  334.             -on2 "setAttr defaultResolution.zerothScanline 1"
  335.             scanlineButtons;
  336.         scriptJob -p $parent 
  337.             -ac "defaultResolution.zerothScanline" 
  338.             "updateFieldOptions";
  339.         
  340.         separator;
  341.  
  342.         radioButtonGrp -numberOfRadioButtons 1
  343.             -label ""
  344.             -label1 "No Field Extension" 
  345.             -onc changeFieldOptions
  346.             fieldButton1;
  347.  
  348.         radioButtonGrp -numberOfRadioButtons 1  
  349.             -shareCollection fieldButton1
  350.             -label1 "Default Field Extension (o and e)" 
  351.             -onc changeFieldOptions
  352.             fieldButton2;
  353.  
  354.         radioButtonGrp -numberOfRadioButtons 1  
  355.             -shareCollection fieldButton1
  356.             -label1 "Custom Extension:" 
  357.             -onc changeFieldOptions
  358.             fieldButton3;
  359.  
  360.         // This works on the above 3 radio buttons
  361.         //
  362.         scriptJob -p $parent 
  363.             -ac "defaultRenderGlobals.fieldExtControl" 
  364.             "updateFieldOptions;";
  365.  
  366.         // Make these fields small to indicate that
  367.         // only a single character is accepted.
  368.         // There's a SUG on this. #87405
  369.         //
  370.            textFieldGrp -label "Odd Field" 
  371.             -cw 2 30 
  372.             -cc changeFieldOptions oddFieldExt;
  373.         scriptJob -p $parent 
  374.             -ac "defaultRenderGlobals.oddFieldExt" 
  375.             "updateFieldOptions;";
  376.  
  377.            textFieldGrp -label "Even Field" 
  378.             -cw 2 30 
  379.             -cc changeFieldOptions evenFieldExt;
  380.         scriptJob -p $parent 
  381.             -ac "defaultRenderGlobals.evenFieldExt" 
  382.             "updateFieldOptions;";
  383.  
  384.     setParent ..;
  385.     setUITemplate -popTemplate;
  386.  
  387.     // Make sure the values are right
  388.     //
  389.     updateFieldOptions;
  390. }
  391.  
  392. // Description: This procedure is called to create the render quality 
  393. //      frame in the maysSoftware tab in the unified render globals 
  394. //      window.
  395. //
  396. global proc updateRenderQuality ()
  397. //
  398. //  Procedure Name:
  399. //      updateRenderQuality
  400. //
  401. //  Description:
  402. //      Gets the real values from the nodes and sets the UI based
  403. //        on these values.  This procedure updates all of the quality
  404. //        values.
  405. //
  406. {
  407.     if (!`columnLayout -exists mayaSoftwareQualityLayout`) {
  408.         return;
  409.     }
  410.  
  411.     string $rendQual[] = `listConnections defaultRenderGlobals.qual`;
  412.  
  413.     int $useBlur = `getAttr defaultRenderGlobals.motionBlur`;
  414.     int $blur2d = (`getAttr defaultRenderGlobals.motionBlurType` == 0);
  415.     int $enableMultiPixelFilter = false;
  416.     int $enableFilterAttrs = false;
  417.  
  418.     int $shadingSamples = `getAttr ($rendQual[0] + ".shadingSamples")`;
  419.  
  420.     int $maxShadingSamples = `getAttr ($rendQual[0] + ".maxShadingSamples")`;
  421.  
  422.     int $visibilitySamples = `getAttr ($rendQual[0] + ".visibilitySamples")`;
  423.  
  424.     int $maxVisibilitySamples
  425.         = `getAttr ($rendQual[0] + ".maxVisibilitySamples")`;
  426.  
  427.     int $particleSamples = `getAttr ($rendQual[0] + ".particleSamples")`;
  428.                 
  429.     // The edge AA settings go from 0-3 for Highest down to Low
  430.     // But we choose to display the menu items in _ascending_ order,
  431.     // for consistency with the order of presets.
  432.     // Thus we must remap the values here
  433.     //
  434.     int $edgeAA = `getAttr ($rendQual[0] + ".edgeAntiAliasing")`;
  435.     int $edgeMenuItem;
  436.     if ($edgeAA == 0) { // Highest
  437.         $edgeMenuItem = 4;
  438.     } else if ($edgeAA == 1) { // High
  439.         $edgeMenuItem = 3;
  440.     } else if ($edgeAA == 2) { // Medium
  441.         $edgeMenuItem = 2;
  442.     } else if ($edgeAA == 3) { // Low
  443.         $edgeMenuItem = 1;
  444.     }
  445.     optionMenuGrp -edit -sl $edgeMenuItem edgeMenu;
  446.  
  447.     int $useMultiPixelFilter
  448.         = `getAttr ($rendQual[0] + ".useMultiPixelFilter")`;
  449.  
  450.     // Check against the contrast threshold values.  The below
  451.     // tolerance check is due to MEL's poor numerical accuracy.
  452.     // E.g., setting a 0.4 value will not result in a 0.4 setting.
  453.     //
  454.     float $numerialTol = 0.001;
  455.     float $highContrastRed = 0.4;
  456.     float $highContrastGreen = 0.3;
  457.     float $highContrastBlue = 0.6;
  458.     float $lowContrastRed = 0.2;
  459.     float $lowContrastGreen = 0.15;
  460.     float $lowContrastBlue = 0.3;
  461.  
  462.     float $redTol = `getAttr ($rendQual[0] + ".redThreshold")`;
  463.     float $greenTol = `getAttr ($rendQual[0] + ".greenThreshold")`;
  464.     float $blueTol = `getAttr ($rendQual[0] + ".blueThreshold")`;
  465.  
  466.     float $redDiff = $redTol - $highContrastRed;
  467.     float $greenDiff = $greenTol - $highContrastGreen;
  468.     float $blueDiff = $blueTol - $highContrastBlue;
  469.     int $highContrast = $redDiff < $numerialTol && $redDiff > -$numerialTol &&
  470.                         $greenDiff < $numerialTol && $greenDiff > -$numerialTol &&
  471.                         $blueDiff < $numerialTol && $blueDiff > -$numerialTol;
  472.     
  473.     $redDiff = $redTol - $lowContrastRed;
  474.     $greenDiff = $greenTol - $lowContrastGreen;
  475.     $blueDiff = $blueTol - $lowContrastBlue;
  476.     int $lowContrast = $redDiff < $numerialTol && $redDiff > -$numerialTol &&
  477.                        $greenDiff < $numerialTol && $greenDiff > -$numerialTol &&
  478.                        $blueDiff < $numerialTol && $blueDiff > -$numerialTol;
  479.  
  480.     // See if the current settings of the 6 attributes we just queried
  481.     // match any preset settings, and set the Presets menu state
  482.     // accordingly
  483.     //
  484.     if ($shadingSamples == 1 && $maxShadingSamples == 1
  485.             && $visibilitySamples == 1 && $maxVisibilitySamples == 4
  486.             && $edgeAA == 3  && $useMultiPixelFilter == 0 && $highContrast) {
  487.         optionMenuGrp -edit -sl 2 qualityPresetMenu; // Preview Quality
  488.     } else if ($shadingSamples == 1 && $maxShadingSamples == 8
  489.             && $visibilitySamples == 1 && $maxVisibilitySamples == 4
  490.             && $edgeAA == 0  && $useMultiPixelFilter == 0 && $highContrast) {
  491.         optionMenuGrp -edit -sl 3 qualityPresetMenu; // Intermediate Quality
  492.     } else if ($shadingSamples == 2 && $maxShadingSamples == 8
  493.             && $visibilitySamples == 1 && $maxVisibilitySamples == 4
  494.             && $edgeAA == 0  && $useMultiPixelFilter == 1 && $highContrast) {
  495.         optionMenuGrp -edit -sl 4 qualityPresetMenu; // Production Quality
  496.     } else if ($shadingSamples == 2 && $maxShadingSamples == 8
  497.             && $visibilitySamples == 1 && $maxVisibilitySamples == 4
  498.             && $edgeAA == 0  && $useMultiPixelFilter == 1 && $lowContrast) {
  499.         optionMenuGrp -edit -sl 5 qualityPresetMenu; // Contrast Sensitive Production Quality
  500.     } else if ($shadingSamples == 3 && $maxShadingSamples == 8
  501.             && $visibilitySamples == 1 && $maxVisibilitySamples == 4
  502.             && $edgeAA == 0  && $useMultiPixelFilter == 1 && $highContrast) {
  503.         optionMenuGrp -edit -sl 6 qualityPresetMenu; // Motion Blur Production
  504.     } else {
  505.         optionMenuGrp -edit -sl 1 qualityPresetMenu; // custom
  506.     }
  507.  
  508.     int $filterType = `getAttr ($rendQual[0] + ".pixelFilterType")`;
  509.     if ($filterType == 0) { // Box Filter
  510.         optionMenuGrp -edit -sl 1 pixelFilterMenu;
  511.     } else if ($filterType == 2) { // Triangle Filter
  512.         optionMenuGrp -edit -sl 2 pixelFilterMenu;
  513.     } else if ($filterType == 4) { // Gaussian Filter
  514.         optionMenuGrp -edit -sl 3 pixelFilterMenu;
  515.     } else if ($filterType == 5) { // Quadratic B-Spline Filter
  516.         optionMenuGrp -edit -sl 4 pixelFilterMenu;
  517.     } else if ($filterType == 1000) { // Plug-in Filter
  518.         optionMenuGrp -edit -sl 5 pixelFilterMenu;
  519.     }
  520.  
  521.     attrControlGrp -edit 
  522.         -enable ($useBlur && !$blur2d) contrastCoverField;
  523.  
  524.     optionMenuGrp -edit -enable $useMultiPixelFilter pixelFilterMenu;
  525.     attrControlGrp -edit -enable $useMultiPixelFilter filterXField;
  526.     attrControlGrp -edit -enable $useMultiPixelFilter filterYField;
  527.  
  528.     // Now dim out items that are not applicable,
  529.     // based on the current settings
  530.     //
  531.     if ($edgeAA == 3) { // Low
  532.         attrControlGrp -edit -enable false pixelCheck;
  533.         optionMenuGrp -edit -enable false pixelFilterMenu;
  534.         attrControlGrp -edit -enable false filterXField;
  535.         attrControlGrp -edit -enable false filterYField;
  536.         attrControlGrp -edit -enable false contrastRedField;
  537.         attrControlGrp -edit -enable false contrastGreenField;
  538.         attrControlGrp -edit -enable false contrastBlueField;
  539.         attrControlGrp -edit -enable false maxShadingSamplesField;
  540.         attrControlGrp -edit -enable ($useBlur && !$blur2d) visSamplesField;
  541.         attrControlGrp -edit -enable false maxVisSamplesField;
  542.     } else if ($edgeAA == 2) { // Medium
  543.         attrControlGrp -edit -enable false pixelCheck;
  544.         optionMenuGrp -edit -enable false pixelFilterMenu;
  545.         attrControlGrp -edit -enable false filterXField;
  546.         attrControlGrp -edit -enable false filterYField;
  547.         attrControlGrp -edit -enable false contrastRedField;
  548.         attrControlGrp -edit -enable false contrastGreenField;
  549.         attrControlGrp -edit -enable false contrastBlueField;
  550.         attrControlGrp -edit -enable false maxShadingSamplesField;
  551.         attrControlGrp -edit -enable ($useBlur && !$blur2d) visSamplesField;
  552.         attrControlGrp -edit -enable false maxVisSamplesField;
  553.     } else if ($edgeAA == 1) { // High
  554.         $enableMultiPixelFilter = true;
  555.         attrControlGrp -edit -enable false contrastRedField;
  556.         attrControlGrp -edit -enable false contrastGreenField;
  557.         attrControlGrp -edit -enable false contrastBlueField;
  558.         attrControlGrp -edit -enable false maxShadingSamplesField;
  559.         attrControlGrp -edit -enable ($useBlur && !$blur2d) visSamplesField;
  560.         attrControlGrp -edit -enable false maxVisSamplesField;
  561.     } else if ($edgeAA == 0) { // Highest
  562.         $enableMultiPixelFilter = true;
  563.         attrControlGrp -edit -enable true contrastRedField;
  564.         attrControlGrp -edit -enable true contrastGreenField;
  565.         attrControlGrp -edit -enable true contrastBlueField;
  566.         attrControlGrp -edit -enable true maxShadingSamplesField;
  567.         attrControlGrp -edit -enable ($useBlur && !$blur2d) visSamplesField;
  568.         attrControlGrp -edit -enable ($useBlur && !$blur2d) maxVisSamplesField;
  569.     }
  570.     if ($enableMultiPixelFilter) {
  571.         $enableFilterAttrs = `getAttr ($rendQual[0] + ".useMultiPixelFilter")`;
  572.     }
  573.     attrControlGrp -edit -enable $enableMultiPixelFilter pixelCheck;
  574.     optionMenuGrp -edit -enable $enableFilterAttrs pixelFilterMenu;
  575.     attrControlGrp -edit -enable $enableFilterAttrs filterXField;
  576.     attrControlGrp -edit -enable $enableFilterAttrs filterYField;
  577. }
  578.  
  579. global proc createRayTraceQuality (string $parent) 
  580. //
  581. //  Procedure Name:
  582. //      createRayTraceQuality
  583. //
  584. //  Description:
  585. //      Creates the UI in the "Raytracing Quality" 
  586. //        expand/collapse section.
  587. //
  588. {
  589.     setUITemplate -pushTemplate attributeEditorTemplate;
  590.  
  591.     setParent $parent;
  592.     string $rendQual[] = `listConnections defaultRenderGlobals.qual`;
  593.  
  594.     // If the UI is created already then reset the command with the correct
  595.     // render quality + update the attribute values.
  596.     //
  597.     if (`columnLayout -exists rgRaytraceLayout`) {
  598.         updateRaytraceQuality;
  599.         return;
  600.     }
  601.  
  602.     columnLayout -adjustableColumn true rgRaytraceLayout;
  603.         
  604.         string $attr = $rendQual[0] + ".enableRaytracing";
  605.         attrControlGrp -label "Raytracing"
  606.             -attribute $attr
  607.             -cc "updateRaytraceQuality"
  608.             raytraceCheck;
  609.  
  610.         $attr = $rendQual[0] + ".reflections";
  611.         attrControlGrp -label "Reflections"
  612.             -attribute $attr
  613.             reflectionsField;
  614.  
  615.         $attr = $rendQual[0] + ".refractions";
  616.         attrControlGrp -label "Refractions"
  617.             -attribute $attr
  618.             refractionsField;
  619.  
  620.         $attr = $rendQual[0] + ".shadows";
  621.         attrControlGrp -label "Shadows"
  622.             -attribute $attr
  623.             shadowsField;
  624.  
  625.         $attr = $rendQual[0] + ".rayTraceBias";
  626.         attrControlGrp -label "Bias"
  627.             -attribute $attr
  628.             rayTraceBiasField;
  629.  
  630.     setParent ..;
  631.     setUITemplate -popTemplate;
  632.  
  633.     // Make sure the values are right
  634.     updateRaytraceQuality;
  635. }
  636.  
  637. global proc createMotionBlur (string $parent) 
  638. //
  639. //  Procedure Name:
  640. //      createMotionBlur
  641. //
  642. //  Description:
  643. //      Creates the UI in the "Motion Blur" expand/collapse section.
  644. //
  645. {
  646.     setUITemplate -pushTemplate attributeEditorTemplate;
  647.  
  648.     setParent $parent;
  649.  
  650.     // If the UI is created already then just update attribute values.
  651.     if (`columnLayout -exists rgBlurLayout`) {
  652.         updateMotionBlur;
  653.         return;
  654.     }
  655.  
  656.     columnLayout -adjustableColumn true rgBlurLayout;
  657.        
  658.     attrControlGrp -label "Motion Blur"
  659.         -attribute "defaultRenderGlobals.motionBlur"
  660.         -cc "updateMotionBlur; updateRenderQuality;"
  661.         blurCheck;
  662.     
  663.         radioButtonGrp -numberOfRadioButtons 1
  664.             -label "Motion Blur Type"
  665.             -label1 "2D" 
  666.             -onc "setAttr defaultRenderGlobals.motionBlurType 0"
  667.             blurButton1;
  668.         radioButtonGrp -numberOfRadioButtons 1
  669.             -shareCollection blurButton1
  670.             -label ""
  671.             -label1 "3D" 
  672.             -onc "setAttr defaultRenderGlobals.motionBlurType 1"
  673.             blurButton2;
  674.  
  675.         // Any time the motion blur type changes we also need to call
  676.         // updateMotionBlur and updateRenderQuality. This is done through
  677.         // a script job watching for an attribute change.
  678.         //
  679.         scriptJob -p $parent 
  680.             -ac "defaultRenderGlobals.motionBlurType" 
  681.             "updateMotionBlur; updateRenderQuality;";
  682.  
  683.         attrControlGrp -label "Blur by Frame"
  684.             -attribute "defaultRenderGlobals.motionBlurByFrame"
  685.             -hideMapButton true
  686.             blurFrameField;
  687.  
  688.         attrControlGrp -label "Blur Length"
  689.             -attribute "defaultRenderGlobals.blurLength"
  690.             -hideMapButton true
  691.             blurLengthField;
  692.  
  693.         attrControlGrp -label "Blur Sharpness"
  694.             -attribute "defaultRenderGlobals.blurSharpness"
  695.             -hideMapButton true
  696.             blurSharpField;
  697.  
  698.         radioButtonGrp -label "Smooth"
  699.             -numberOfRadioButtons 2
  700.             -label1 "Alpha"
  701.             -label2 "Color"
  702.             -on1 "setAttr defaultRenderGlobals.smoothColor 0"
  703.             -on2 "setAttr defaultRenderGlobals.smoothColor 1"
  704.             blurSmoothRadio;
  705.         scriptJob -p $parent 
  706.             -ac "defaultRenderGlobals.smoothColor" "updateMotionBlur";
  707.  
  708.         attrControlGrp -label "Smooth Value"
  709.             -attribute "defaultRenderGlobals.smoothValue"
  710.             -hideMapButton true
  711.             blurSmoothField;
  712.  
  713.         attrControlGrp -label "Keep Motion Vectors"
  714.             -attribute "defaultRenderGlobals.keepMotionVector"
  715.             blurVectorCheck;
  716.  
  717.           if(!`about -mac`){
  718.             attrControlGrp -label "Use 2d Blur Memory Limit"
  719.                 -attribute "defaultRenderGlobals.useBlur2DMemoryCap"
  720.                 -cc "updateMotionBlur"
  721.                 blurMemoryCapCheck;
  722.  
  723.             attrControlGrp -label "2d Blur Memory Limit"
  724.                 -attribute "defaultRenderGlobals.blur2DMemoryCap"
  725.                 -hideMapButton true
  726.                 blurMemoryCapField;
  727.          }
  728.  
  729.     setParent ..;
  730.     setUITemplate -popTemplate;
  731.  
  732.     // Make sure the values are right
  733.     //
  734.     updateMotionBlur;
  735. }
  736.  
  737. global proc createRenderOptions (string $parent) 
  738. //
  739. //  Procedure Name:
  740. //      createRenderOptions
  741. //
  742. //  Description:
  743. //      Creates the UI in the "Render Options" expand/collapse section.
  744. //
  745. {
  746.     setUITemplate -pushTemplate attributeEditorTemplate;
  747.  
  748.     setParent $parent;
  749.  
  750.     if (`columnLayout -exists rgOptionsLayout`) {
  751.         return;
  752.     }
  753.  
  754.     columnLayout -adjustableColumn true rgOptionsLayout;
  755.  
  756.     // Post Processing 
  757.     //
  758.     frameLayout -label "Post Processing" 
  759.         -cll false -cl false;
  760.  
  761.         columnLayout -adjustableColumn true; 
  762.  
  763.         attrNavigationControlGrp -l "Environment Fog"
  764.                 -at defaultRenderGlobals.fogGeometry envFogControl;
  765.         if (`isTrue MayaCreatorExists`) {
  766.             attrControlGrp -label "Apply Fog in Post"
  767.                 -attribute "defaultRenderGlobals.applyFogInPost"
  768.                 -cc "attrControlGrp -edit -enable `getAttr defaultRenderGlobals.applyFogInPost` postFogBlurField"
  769.                 applyFogInPostCheck;
  770.             attrControlGrp -label "Post Fog Blur"
  771.                 -attribute "defaultRenderGlobals.postFogBlur"
  772.                 -hideMapButton true
  773.                 -enable `getAttr defaultRenderGlobals.applyFogInPost` 
  774.                 postFogBlurField;
  775.             separator;
  776.         }
  777.  
  778.         setParent ..;   // from columnLayout
  779.     setParent ..;   // from frameLayout "Post Processing"
  780.  
  781.     // Cameras
  782.     //
  783.     frameLayout -label "Camera" 
  784.         -cll false -cl false;
  785.  
  786.         attrControlGrp -label "Ignore Film Gate"
  787.             -attribute "defaultRenderGlobals.ignoreFilmGate"
  788.             filmGateCheck;
  789.  
  790.     setParent ..;   // from frameLayout "Camera"
  791.  
  792.     // Lights and Shadows
  793.     // 
  794.     frameLayout -label "Lights and Shadows" 
  795.         -cll false -cl false;
  796.  
  797.         columnLayout -adjustableColumn true; 
  798.  
  799.         attrControlGrp -label "Shadows Obey Light Linking"
  800.             -attribute "defaultRenderGlobals.shadowsObeyLightLinking"
  801.             shadowLightLinkCheck;
  802.         
  803.         attrControlGrp -label "Enable Depth Maps"
  804.             -attribute "defaultRenderGlobals.enableDepthMaps"
  805.             depthMapCheck;
  806.  
  807.         setParent ..;   // from columnLayout
  808.  
  809.     setParent ..;   // from frameLayout "Lights and Shadows"
  810.  
  811.     // Color/Compositing
  812.     //
  813.     frameLayout -label "Color/Compositing" 
  814.         -cll false -cl false;
  815.  
  816.         columnLayout -adjustableColumn true; 
  817.  
  818.         attrControlGrp -label "Gamma Correction"
  819.             -attribute "defaultRenderGlobals.gammaCorrection"
  820.             -hideMapButton true
  821.             gammaField;
  822.  
  823.         attrControlGrp -label "Clip Final Shaded Color"
  824.             -attribute "defaultRenderGlobals.clipFinalShadedColor"
  825.             clipCheck;
  826.  
  827.         attrControlGrp -label "Jitter Final Color"
  828.             -attribute "defaultRenderGlobals.jitterFinalColor"
  829.             jitterColor;
  830.         
  831.     
  832.         checkBoxGrp -label1 "Premultiply"
  833.             -cc "mayaSoftwarePremultiplyCtrlChanged"
  834.             mayaSoftwarePremultiplyCtrl;
  835.  
  836.         scriptJob -p "mayaSoftwarePremultiplyCtrl" 
  837.             -ac "defaultRenderGlobals.composite" 
  838.             "updateMayaSoftwarePremultiplyCtrl";
  839.         
  840.         attrControlGrp -label "Premultiply Threshold"
  841.             -attribute "defaultRenderGlobals.compositeThreshold"
  842.             -hideMapButton true
  843.             premultiplyThresholdCtrl;
  844.  
  845.         setParent ..;   // from columnLayout
  846.  
  847.     setParent ..;   // from frameLayout "Color/Compositing"
  848.             
  849.         // update the premultiply controls
  850.         //
  851.         updateMayaSoftwarePremultiplyCtrl();
  852.  
  853.     setParent ..;
  854.     setUITemplate -popTemplate;
  855. }
  856.  
  857. // Description:  This procedure is called when the "Premultiply" control
  858. //      is changed by the user.
  859. //
  860. global proc mayaSoftwarePremultiplyCtrlChanged()
  861. {
  862.     int $premultiply = 
  863.         `checkBoxGrp  -query -value1 mayaSoftwarePremultiplyCtrl`;   
  864.     int $composite = !$premultiply;
  865.     setAttr defaultRenderGlobals.composite $composite;
  866.     attrControlGrp -edit -enable $composite premultiplyThresholdCtrl;
  867. }
  868.  
  869. // Description:  This procedure is called when the attribute
  870. //          renderGlobals.composite 
  871. //      is changed and we need to update the "Premultiply" control
  872. //      to reflect this change. 
  873. //
  874. global proc updateMayaSoftwarePremultiplyCtrl()
  875. {
  876.     int $composite = `getAttr defaultRenderGlobals.composite`;
  877.     int $premultiply = !$composite;
  878.     checkBoxGrp  -edit -value1 $premultiply mayaSoftwarePremultiplyCtrl;
  879.     attrControlGrp -edit -enable $composite premultiplyThresholdCtrl;
  880. }
  881.  
  882. global proc createPerformanceOptions (string $parent) 
  883. //
  884. //  Procedure Name:
  885. //      createPerformanceOptions
  886. //
  887. //  Description:
  888. //      Creates the UI in the "Memory and Performance Options" 
  889. //        expand/collapse section.
  890. //
  891. {
  892.     setUITemplate -pushTemplate attributeEditorTemplate;
  893.  
  894.     setParent $parent;
  895.  
  896.     // If the UI is created already then just update the attribute values.
  897.     //
  898.     if (`columnLayout -exists rgPerformanceLayout`) {
  899.         return;
  900.     }
  901.  
  902.     columnLayout -adjustableColumn true rgPerformanceLayout;
  903.  
  904.         frameLayout -label "Tessellation" 
  905.             -labelVisible true -borderVisible true 
  906.             -borderStyle "etchedIn"
  907.             -labelAlign "center" -labelWidth 100
  908.             -collapsable false -collapse true;
  909.         columnLayout -adjustableColumn true;
  910.     
  911.             attrControlGrp -label "Use File Cache"
  912.                 -attribute "defaultRenderGlobals.useFileCache"
  913.                 cacheCheck;         
  914.         
  915.             attrControlGrp -label "Optimize Instances"
  916.                 -attribute "defaultRenderGlobals.optimizeInstances"
  917.                 optCheck;         
  918.     
  919.             attrControlGrp -label "Reuse Tessellations"
  920.                 -attribute "defaultRenderGlobals.reuseTessellations"
  921.                 reuseCheck;         
  922.  
  923.             attrControlGrp -label "Use Displacement Bounding Box"
  924.                 -attribute "defaultRenderGlobals.useDisplacementBoundingBox"
  925.                 dispBBCheck;         
  926.  
  927.         setParent ..;
  928.         setParent ..;
  929.  
  930.         frameLayout -label "Ray Tracing" 
  931.             -labelVisible true -borderVisible true 
  932.             -borderStyle "etchedIn"
  933.             -labelAlign "center"  -labelWidth 100
  934.             -collapsable false -collapse true;
  935.         columnLayout -adjustableColumn true;
  936.     
  937.             attrControlGrp -label "Recursion Depth"
  938.                 -attribute "defaultRenderGlobals.recursionDepth"
  939.                 -hideMapButton true
  940.                 recursionDepth;         
  941.  
  942.             attrControlGrp -label "Leaf Primitives"
  943.                 -attribute "defaultRenderGlobals.leafPrimitives"
  944.                 -hideMapButton true
  945.                 leafPrim;         
  946.  
  947.             attrControlGrp -label "Subdivision Power"
  948.                 -attribute "defaultRenderGlobals.subdivisionPower"
  949.                 -hideMapButton true
  950.                 subPower;         
  951.  
  952.         setParent ..;
  953.         setParent ..;
  954.  
  955.         frameLayout -label "Multi Processing" 
  956.             -labelVisible true -borderVisible true 
  957.             -borderStyle "etchedIn"
  958.             -labelAlign "center"  -labelWidth 100
  959.             -collapsable false -collapse true;
  960.         columnLayout -adjustableColumn true;
  961.         
  962.             checkBoxGrp -numberOfCheckBoxes 1
  963.                 -label1 "Use All Available CPUs"
  964.                 -cc "setAttr defaultRenderGlobals.numCpusToUse (#1 ? 0 : 1)"
  965.                 numCpusCheckBox;
  966.  
  967.             attrControlGrp -label "Num. CPUs to Use"
  968.                 -attribute "defaultRenderGlobals.numCpusToUse"
  969.                 -cc "updateMayaSoftwareNumCpusSlider(`getAttr defaultRenderGlobals.numCpusToUse`);"
  970.                 -hideMapButton true
  971.                 numCpusSlider;
  972.  
  973.             updateMayaSoftwareNumCpusSlider(`getAttr defaultRenderGlobals.numCpusToUse`);
  974.  
  975.         setParent ..;
  976.         setParent ..;
  977.  
  978.     setParent ..;
  979.     setUITemplate -popTemplate;
  980. }
  981.  
  982. global proc createIPROptions (string $parent) 
  983. //
  984. //  Procedure Name:
  985. //      createIPROptions
  986. //
  987. //  Description:
  988. //      Creates the UI in the "IPR Render Globals" 
  989. //        expand/collapse section.
  990. //
  991. {
  992.     setUITemplate -pushTemplate attributeEditorTemplate;
  993.  
  994.     setParent $parent;
  995.  
  996.     // If the UI is created already then just update the attribute values.
  997.     if (`columnLayout -exists rgIPRLayout`) {
  998.         updateIPROptions;
  999.         return;
  1000.     }
  1001.  
  1002.     columnLayout -adjustableColumn true rgIPRLayout;
  1003.  
  1004.         checkBoxGrp -numberOfCheckBoxes 1
  1005.             -label1 "Render Shading, Lighting and Glow" 
  1006.             -cc "updateIPRShadingOptionVar"
  1007.             iprShadingCheck;
  1008.  
  1009.         checkBoxGrp -numberOfCheckBoxes 1
  1010.             -label1 "Render Shadow Maps" 
  1011.             -cc "updateIPRShadowOptionVar"
  1012.             iprShadowCheck;
  1013.  
  1014.         checkBoxGrp -numberOfCheckBoxes 1
  1015.             -label1 "Render 2D Motion Blur" 
  1016.             -cc "updateIPR2dBlurOptionVar"
  1017.             ipr2DBlurCheck;
  1018.  
  1019.     setParent ..;
  1020.     setUITemplate -popTemplate;
  1021.  
  1022.     // Make sure the values are right
  1023.     //
  1024.     updateIPROptions;
  1025. }
  1026.  
  1027. global proc createUrchinOptions (string $parent) 
  1028. //
  1029. //  Procedure Name:
  1030. //      createUrchinOptions
  1031. //
  1032. //  Description:
  1033. //      Creates the UI in the "Paint Effects Rendering Options" 
  1034. //        expand/collapse section.
  1035. //
  1036. {
  1037.     setUITemplate -pushTemplate attributeEditorTemplate;
  1038.  
  1039.     setParent $parent;
  1040.  
  1041.     // If the UI is created already then just update the attribute values.
  1042.     if (`columnLayout -exists rgUrchinLayout`) {
  1043.         updateUrchinOptions;
  1044.         return;
  1045.     }
  1046.  
  1047.     columnLayout -adjustableColumn true rgUrchinLayout;
  1048.  
  1049.         attrControlGrp -label "Enable Stroke Rendering"
  1050.             -attribute "defaultRenderGlobals.enableStrokeRender"
  1051.             -cc "updateUrchinOptions;"
  1052.             enableStrokesCheck; 
  1053.         
  1054.         attrControlGrp -label "Oversample" 
  1055.             -attribute "defaultRenderGlobals.oversamplePaintEffects"
  1056.             -cc "updateUrchinOptions;"
  1057.             oversamplePaintEffectsCheck;
  1058.  
  1059.         attrControlGrp -label "Oversample Post Filter" 
  1060.             -attribute "defaultRenderGlobals.oversamplePfxPostFilter"
  1061.             -changeCommand "updateUrchinOptions;"
  1062.             oversamplePfxPostFilterCheck;
  1063.  
  1064.         attrControlGrp -label "Only Render Strokes" 
  1065.             -attribute "defaultRenderGlobals.onlyRenderStrokes"
  1066.             -cc "updateUrchinOptions;"
  1067.             onlyStrokesCheck; 
  1068.  
  1069.         textFieldGrp -label "Read This Depth File"
  1070.             -cc "setRenderGlobalsDepthFile"
  1071.             depthStrokesCheck;
  1072.  
  1073.     setParent ..;
  1074.     setUITemplate -popTemplate;
  1075.  
  1076.     // Make sure the values are right
  1077.     //
  1078.     updateUrchinOptions;
  1079. }
  1080.  
  1081. // Description: This procedure is called when a particular 
  1082. //      quality preset is chosen in the render quality frame.
  1083. //      It sets some attributes according to the chosen quality preset.
  1084. //
  1085. global proc RGsetDefaultQuality ()
  1086. {
  1087.     string $rendQual[] = `listConnections defaultRenderGlobals.qual`;
  1088.     string $curr = `optionMenuGrp -q -v qualityPresetMenu`;
  1089.     if ($curr == "Preview Quality") {
  1090.         setAttr ($rendQual[0] + ".edgeAntiAliasing") 3;
  1091.         setAttr ($rendQual[0] + ".useMultiPixelFilter") 0;
  1092.         setAttr ($rendQual[0] + ".shadingSamples") 1;
  1093.         setAttr ($rendQual[0] + ".maxShadingSamples") 1;
  1094.         setAttr ($rendQual[0] + ".visibilitySamples") 1;
  1095.         setAttr ($rendQual[0] + ".maxVisibilitySamples") 4;
  1096.         setAttr ($rendQual[0] + ".redThreshold") 0.4;
  1097.         setAttr ($rendQual[0] + ".greenThreshold") 0.3;
  1098.         setAttr ($rendQual[0] + ".blueThreshold") 0.6;
  1099.         setAttr ($rendQual[0] + ".reflections") 1;
  1100.         setAttr ($rendQual[0] + ".refractions") 6;
  1101.         setAttr ($rendQual[0] + ".shadows") 2;
  1102.     } else if ($curr == "Intermediate Quality") {
  1103.         setAttr ($rendQual[0] + ".edgeAntiAliasing") 0;
  1104.         setAttr ($rendQual[0] + ".useMultiPixelFilter") 0;
  1105.         setAttr ($rendQual[0] + ".shadingSamples") 1;
  1106.         setAttr ($rendQual[0] + ".maxShadingSamples") 8;
  1107.         setAttr ($rendQual[0] + ".visibilitySamples") 1;
  1108.         setAttr ($rendQual[0] + ".maxVisibilitySamples") 4;
  1109.         setAttr ($rendQual[0] + ".redThreshold") 0.4;
  1110.         setAttr ($rendQual[0] + ".greenThreshold") 0.3;
  1111.         setAttr ($rendQual[0] + ".blueThreshold") 0.6;
  1112.         setAttr ($rendQual[0] + ".reflections") 1;
  1113.         setAttr ($rendQual[0] + ".refractions") 6;
  1114.         setAttr ($rendQual[0] + ".shadows") 2;
  1115.     } else if ($curr == "Production Quality") {
  1116.         setAttr ($rendQual[0] + ".edgeAntiAliasing") 0;
  1117.         setAttr ($rendQual[0] + ".useMultiPixelFilter") 1;
  1118.         setAttr ($rendQual[0] + ".shadingSamples") 2;
  1119.         setAttr ($rendQual[0] + ".maxShadingSamples") 8;
  1120.         setAttr ($rendQual[0] + ".visibilitySamples") 1;
  1121.         setAttr ($rendQual[0] + ".maxVisibilitySamples") 4;
  1122.         setAttr ($rendQual[0] + ".redThreshold") 0.4;
  1123.         setAttr ($rendQual[0] + ".greenThreshold") 0.3;
  1124.         setAttr ($rendQual[0] + ".blueThreshold") 0.6;
  1125.         setAttr ($rendQual[0] + ".reflections") 10;
  1126.         setAttr ($rendQual[0] + ".refractions") 10;
  1127.         setAttr ($rendQual[0] + ".shadows") 10;
  1128.     } else if ($curr == "Contrast Sensitive Production") {
  1129.         setAttr ($rendQual[0] + ".edgeAntiAliasing") 0;
  1130.         setAttr ($rendQual[0] + ".useMultiPixelFilter") 1;
  1131.         setAttr ($rendQual[0] + ".shadingSamples") 2;
  1132.         setAttr ($rendQual[0] + ".maxShadingSamples") 8;
  1133.         setAttr ($rendQual[0] + ".visibilitySamples") 1;
  1134.         setAttr ($rendQual[0] + ".maxVisibilitySamples") 4;
  1135.         setAttr ($rendQual[0] + ".redThreshold") 0.2;
  1136.         setAttr ($rendQual[0] + ".greenThreshold") 0.15;
  1137.         setAttr ($rendQual[0] + ".blueThreshold") 0.3;
  1138.         setAttr ($rendQual[0] + ".reflections") 10;
  1139.         setAttr ($rendQual[0] + ".refractions") 10;
  1140.         setAttr ($rendQual[0] + ".shadows") 10;
  1141.     } else if ($curr == "3D Motion Blur Production") {
  1142.         setAttr ($rendQual[0] + ".edgeAntiAliasing") 0;
  1143.         setAttr ($rendQual[0] + ".useMultiPixelFilter") 1;
  1144.         setAttr ($rendQual[0] + ".shadingSamples") 3;
  1145.         setAttr ($rendQual[0] + ".maxShadingSamples") 8;
  1146.         setAttr ($rendQual[0] + ".visibilitySamples") 1;
  1147.         setAttr ($rendQual[0] + ".maxVisibilitySamples") 4;
  1148.         setAttr ($rendQual[0] + ".redThreshold") 0.4;
  1149.         setAttr ($rendQual[0] + ".greenThreshold") 0.3;
  1150.         setAttr ($rendQual[0] + ".blueThreshold") 0.6;
  1151.         setAttr ($rendQual[0] + ".reflections") 10;
  1152.         setAttr ($rendQual[0] + ".refractions") 10;
  1153.         setAttr ($rendQual[0] + ".shadows") 10;
  1154.     }
  1155.     updateRenderQuality;
  1156.  
  1157.     if (`columnLayout -exists rgRaytraceLayout`) updateRaytraceQuality;
  1158. }
  1159.  
  1160. // Description: This procedure is called when a particular 
  1161. //      edge quality is chosen in the render quality frame.
  1162. //      It sets some attributes according to the chosen edge quality. 
  1163. //
  1164. global proc RGsetEdgeQuality()
  1165. {
  1166.     string $rendQual[] = `listConnections defaultRenderGlobals.qual`;
  1167.     string $curr = `optionMenuGrp -q -v edgeMenu`;
  1168.     if ($curr == "Low Quality") {
  1169.         setAttr ($rendQual[0] + ".edgeAntiAliasing") 3;
  1170.     } else if ($curr == "Medium Quality") {
  1171.         setAttr ($rendQual[0] + ".edgeAntiAliasing") 2;
  1172.     } else if ($curr == "High Quality") {
  1173.         setAttr ($rendQual[0] + ".edgeAntiAliasing") 1;
  1174.     } else {
  1175.         setAttr ($rendQual[0] + ".edgeAntiAliasing") 0;
  1176.     }
  1177.  
  1178.     updateRenderQuality;
  1179. }
  1180.  
  1181. // Description: This procedure is called when the pixel filter is
  1182. //      chosen.  The quality render globals' pixelFilterType attribute
  1183. //      will be set accordingly.
  1184. // 
  1185. global proc RGsetPixelFilterType()
  1186. {
  1187.     string $rendQual[] = `listConnections defaultRenderGlobals.qual`;
  1188.     string $curr = `optionMenuGrp -q -v pixelFilterMenu`;
  1189.     if ($curr == "Box Filter") {
  1190.         setAttr ($rendQual[0] + ".pixelFilterType") 0;
  1191.     } else if ($curr == "Triangle Filter") {
  1192.         setAttr ($rendQual[0] + ".pixelFilterType") 2;
  1193.     } else if ($curr == "Gaussian Filter") {
  1194.         setAttr ($rendQual[0] + ".pixelFilterType") 4;
  1195.     } else if ($curr == "Quadratic B-Spline Filter") {
  1196.         setAttr ($rendQual[0] + ".pixelFilterType") 5;
  1197.     } else if ($curr == "Plug-in Filter") {
  1198.         setAttr ($rendQual[0] + ".pixelFilterType") 1000;
  1199.     }
  1200.     updateRenderQuality;
  1201. }
  1202.  
  1203. global proc updateFieldOptions ()
  1204. //
  1205. //  Procedure Name:
  1206. //      updateFieldOptions
  1207. //
  1208. //  Description:
  1209. //      Gets the real values from the nodes and sets the UI based
  1210. //        on these values.  This procedure updates all of the field
  1211. //        values.
  1212. //
  1213. {
  1214.     int $fieldType = `getAttr defaultResolution.fields` + 1;
  1215.     int $useFields = ($fieldType != 1);
  1216.     int $autoInterlace = ($fieldType == 4);
  1217.  
  1218.     // Because of 123444, the ordering of the menu and the actual
  1219.     // saved fields values are not the same, which is why the
  1220.     // below convoluted code.
  1221.     //
  1222.     switch ($fieldType) {
  1223.         case 1:
  1224.             optionMenuGrp -edit -select 1 fieldMenu;
  1225.             break;
  1226.         case 2:
  1227.         case 3:
  1228.             optionMenuGrp -edit -select ($fieldType + 2) fieldMenu;
  1229.             break;
  1230.         case 4:
  1231.         case 5:
  1232.             optionMenuGrp -edit -select ($fieldType - 2) fieldMenu;
  1233.             break;
  1234.     }
  1235.         
  1236.  
  1237.     optionMenuGrp -edit -enable $useFields fieldDominanceMenu;
  1238.     int $oddFieldFirst = `getAttr defaultResolution.oddFieldFirst`;
  1239.     int $whichDominance = $oddFieldFirst ? 1 : 2;
  1240.     optionMenuGrp -edit -sl $whichDominance fieldDominanceMenu;
  1241.  
  1242.     if ($fieldType == 1 || $fieldType == 4)
  1243.         radioButtonGrp -edit
  1244.             -select (`getAttr defaultResolution.zerothScanline` + 1)
  1245.             -enable 0
  1246.             scanlineButtons;
  1247.     else
  1248.         radioButtonGrp -edit
  1249.             -select (`getAttr defaultResolution.zerothScanline` + 1)
  1250.             -enable 1
  1251.             scanlineButtons;
  1252.     
  1253.     int $useCustom = 0;    
  1254.     if (`getAttr "defaultRenderGlobals.fieldExtControl"` == 1)
  1255.         radioButtonGrp -edit -select 1 fieldButton1;
  1256.     else if (`getAttr "defaultRenderGlobals.fieldExtControl"` == 0) 
  1257.         radioButtonGrp -edit -select 1 fieldButton2;
  1258.     else {
  1259.         radioButtonGrp -edit -select 1 fieldButton3;
  1260.         $useCustom = 1;
  1261.     }
  1262.     
  1263.     radioButtonGrp -edit -enable ($useFields && !$autoInterlace) fieldButton1;
  1264.     radioButtonGrp -edit -enable ($useFields && !$autoInterlace) fieldButton2;
  1265.     radioButtonGrp -edit -enable ($useFields && !$autoInterlace) fieldButton3;
  1266.  
  1267.     textFieldGrp -edit
  1268.         -text `getAttr "defaultRenderGlobals.oddFieldExt"`
  1269.         -enable ($useFields && $useCustom)
  1270.         oddFieldExt;
  1271.         
  1272.     textFieldGrp -edit
  1273.         -text `getAttr "defaultRenderGlobals.evenFieldExt"`
  1274.         -enable ($useFields && $useCustom)
  1275.         evenFieldExt;
  1276. }
  1277.  
  1278. global proc changeFieldOptions ()
  1279. //
  1280. //  Procedure Name:
  1281. //      changeFieldOptions
  1282. //
  1283. //  Description:
  1284. //        This procedure is called when the user changes any of the 
  1285. //        values for fields.  It sets the internal representation
  1286. //        and then updates the example to show the changes.
  1287. //
  1288. {
  1289.     // Note that we stored the fields values internally different
  1290.     // from what's presented in the menu.  That is why the below
  1291.     // convoluted case statement.  Sorry - see 123444.
  1292.     int $realFieldsValue = (`optionMenuGrp -q -sl fieldMenu` - 1);
  1293.     switch ($realFieldsValue) {
  1294.         case 0:
  1295.             setAttr "defaultResolution.fields" 0;
  1296.             break;
  1297.         case 1:
  1298.         case 2:
  1299.             setAttr "defaultResolution.fields" ($realFieldsValue + 2);
  1300.             break;
  1301.         case 3:
  1302.         case 4:
  1303.             setAttr "defaultResolution.fields" ($realFieldsValue - 2);
  1304.             break;
  1305.     }
  1306.  
  1307.  
  1308.     int $whichDominance = `optionMenuGrp -q -sl fieldDominanceMenu`;
  1309.     if ($whichDominance == 1) {
  1310.         setAttr "defaultResolution.oddFieldFirst" true;
  1311.     } else {
  1312.         setAttr "defaultResolution.oddFieldFirst" false;
  1313.     }
  1314.     setAttr "defaultResolution.zerothScanline"
  1315.         (`radioButtonGrp -q -sl scanlineButtons` -1);
  1316.     
  1317.     if (`radioButtonGrp -q -sl fieldButton1`) {
  1318.         setAttr "defaultRenderGlobals.fieldExtControl" 1;
  1319.     } else if (`radioButtonGrp -q -sl fieldButton2`) {
  1320.         setAttr "defaultRenderGlobals.fieldExtControl" 0; 
  1321.     } else {
  1322.         setAttr "defaultRenderGlobals.fieldExtControl" 2; 
  1323.     }
  1324.     
  1325.     string $test = `textFieldGrp -q -text oddFieldExt`;
  1326.     if (size($test) > 1) {
  1327.         catch (error ("Field extensions must be a single character."));
  1328.     } else {
  1329.         setAttr -type "string" "defaultRenderGlobals.oddFieldExt" $test;
  1330.     }
  1331.     
  1332.     $test = `textFieldGrp -q -text evenFieldExt`;
  1333.     if (size($test) > 1) {
  1334.         catch (error ("Field extensions must be a single character."));
  1335.     } else {
  1336.         setAttr -type "string" "defaultRenderGlobals.evenFieldExt"  $test;
  1337.     }
  1338.  
  1339.     updateFieldOptions;
  1340.     updateFileOutputFeedback;
  1341. }
  1342.  
  1343. global proc updateFileOutputFeedback ()
  1344. //
  1345. //  Procedure Name:
  1346. //      updateFileOutputFeedback
  1347. //
  1348. //  Description:
  1349. //      Updates lines of text that allow the user to see
  1350. //        what files are going to be created when they render.
  1351. //
  1352. {
  1353.     string $title1 = "  File Name:  ";
  1354.     string $title2 = "  To:             ";
  1355.  
  1356.     string $prefix = `textFieldGrp -query -text mayaSoftwareFileName`;
  1357.     if ($prefix == "(not set; using filename)") {
  1358.         string $sceneName = `file -q -sn`;
  1359.         if (size($sceneName) == 0) {
  1360.             $prefix = "untitled";
  1361.         } else {
  1362.             string $buffer[];
  1363.             tokenize $sceneName "/\\" $buffer;
  1364.             string $tail = $buffer[size($buffer) - 1];
  1365.             tokenize $tail "." $buffer;
  1366.             $tail = $buffer[0];
  1367.             $prefix = $tail;
  1368.         }
  1369.     }
  1370.  
  1371.     // Image extension
  1372.     //
  1373.     string $imageType;
  1374.     int $imageUse = `getAttr "defaultRenderGlobals.outFormatControl"`;
  1375.     if ($imageUse == 1) {
  1376.         // Don't use extension
  1377.         $imageType = "";
  1378.     } else if ($imageUse == 0) {
  1379.         // Show the extension
  1380.         global string $imgExt[];  // This is the actual file extension
  1381.         global int $imgExtNum[];  // This is the corresponding internal value
  1382.  
  1383.         int $imageNum = `getAttr "defaultRenderGlobals.imageFormat"`;
  1384.         for ($i=0; $i < size($imgExtNum); ++$i) {
  1385.             if ($imageNum == $imgExtNum[$i]) {
  1386.                 $imageType = "."+$imgExt[$i];
  1387.                 break;
  1388.             }
  1389.         }
  1390.     } else if ($imageUse == 2) {
  1391.         // User specified
  1392.         //
  1393.         $imageType = "."+`getAttr "defaultRenderGlobals.outFormatExt"` ;
  1394.     }
  1395.     
  1396.     // Frames number extension
  1397.     string $frame1 = "";
  1398.     string $frame2 = "";
  1399.     int $useAnim = `getAttr "defaultRenderGlobals.animation"`;
  1400.     if ($useAnim) {
  1401.  
  1402.         // if useAnim, make sure it's not a movie format, or else
  1403.         // bad extension names will be printed out to the window.
  1404.         //
  1405.         int $imgFormat = `getAttr "defaultRenderGlobals.imageFormat"`;
  1406.         if ($imgFormat == 21 || $imgFormat == 22 || $imgFormat == 23)
  1407.             $useAnim = 0;
  1408.     }
  1409.     if ($useAnim) {
  1410.         float $byf = `getAttr defaultRenderGlobals.byFrameStep`;
  1411.         if ($byf == 0.0) $byf = 0.00001;
  1412.  
  1413.         int $pad = `getAttr "defaultRenderGlobals.extensionPadding"`;
  1414.         int $f1 = `getAttr "defaultRenderGlobals.startFrame"`;
  1415.         int $f2 = `getAttr "defaultRenderGlobals.endFrame"`;
  1416.         int $numFrames = ($f2 - $f1) / $byf;
  1417.  
  1418.         // Check to see if the numbers are being modified
  1419.         if (`getAttr "defaultRenderGlobals.modifyExtension"`) {
  1420.             $f1 = `getAttr defaultRenderGlobals.startExtension`;
  1421.             $f2 = $f1 + ($numFrames * `getAttr defaultRenderGlobals.byExtension`);
  1422.         }
  1423.             
  1424.         // Convert to strings
  1425.         //
  1426.         $frame1 = $f1;
  1427.         $frame2 = $f2;
  1428.  
  1429.         // Pad the numbers
  1430.         for ($i=size($frame1); $i<$pad; $i++) {
  1431.             $frame1 = "0"+$frame1;
  1432.         }
  1433.         if (`getAttr "defaultRenderGlobals.periodInExt"`)
  1434.             $frame1 = "."+$frame1;
  1435.  
  1436.         for ($i=size($frame2); $i<$pad; $i++) {
  1437.             $frame2 = "0"+$frame2;
  1438.         }
  1439.         if (`getAttr "defaultRenderGlobals.periodInExt"`)
  1440.             $frame2 = "."+$frame2;
  1441.     }
  1442.     
  1443.     // Check for fields
  1444.  
  1445.     string $fieldExt = "";
  1446.     int $whichFields = `getAttr defaultResolution.fields`;
  1447.     int $useFields = ($whichFields != 0);
  1448.     int $useFieldExt = (`getAttr "defaultRenderGlobals.fieldExtControl"` != 1);
  1449.     int $defFieldExt = (`getAttr "defaultRenderGlobals.fieldExtControl"` == 0);
  1450.     int $useCustom = (`getAttr "defaultRenderGlobals.fieldExtControl"` == 2);
  1451.     
  1452.     // Note that I am not using a "." in front of these.
  1453.     // That's the way the code works now.  
  1454.     // I think that there should be a "."
  1455.     //
  1456.     if ($useFields && $useFieldExt) {
  1457.         // Add fields to the file name
  1458.         if ($defFieldExt) {
  1459.             if ($whichFields == 1) $fieldExt = "o";
  1460.             if ($whichFields == 2) $fieldExt = "e";
  1461.             if ($whichFields == 3 || $whichFields == 4) $fieldExt = "e (o)";
  1462.         } else if ($useCustom) {
  1463.             if ($whichFields == 1) $fieldExt = `getAttr "defaultRenderGlobals.oddFieldExt"`;
  1464.             if ($whichFields == 2) $fieldExt = `getAttr "defaultRenderGlobals.evenFieldExt"`;
  1465.             if ($whichFields == 3 || $whichFields == 4) $fieldExt = `getAttr "defaultRenderGlobals.oddFieldExt"`
  1466.                 + " (" + `getAttr "defaultRenderGlobals.evenFieldExt"` + ")";
  1467.         }
  1468.     }
  1469.  
  1470.     // Now put them all together to show what is going to happen
  1471.     int $frameBeforeExt = `getAttr "defaultRenderGlobals.putFrameBeforeExt"`;  // 0=ext.frame, 1=frame.ext
  1472.     if ($frameBeforeExt == 0) {
  1473.         text -edit -label ($title1+$prefix+$imageType+$frame1+$fieldExt) exampleText1;
  1474.         if ($useAnim) {
  1475.             text -edit -label ($title2+$prefix+$imageType+$frame2+$fieldExt) exampleText2;
  1476.         } else {
  1477.             text -edit -label "" exampleText2;
  1478.         }
  1479.     } else {
  1480.         text -edit -label ($title1+$prefix+$frame1+$fieldExt+$imageType) exampleText1;
  1481.         if ($useAnim) {
  1482.             text -edit -label ($title2+$prefix+$frame2+$fieldExt+$imageType) exampleText2;
  1483.         } else {
  1484.             text -edit -label "" exampleText2;
  1485.         }
  1486.     }
  1487. }
  1488.  
  1489. global proc updateRaytraceQuality ()
  1490. //
  1491. //  Procedure Name:
  1492. //      updateRaytraceQuality
  1493. //
  1494. //  Description:
  1495. //      Gets the real values from the nodes and sets the UI based
  1496. //        on these values.  This procedure updates all of the quality
  1497. //        values.
  1498. //
  1499. {
  1500.     string $rendQual[] = `listConnections defaultRenderGlobals.qual`;
  1501.     int $useRT = `getAttr ($rendQual[0] + ".enableRaytracing")`;
  1502.     attrControlGrp -edit -enable $useRT reflectionsField;
  1503.     attrControlGrp -edit -enable $useRT refractionsField;
  1504.     attrControlGrp -edit -enable $useRT shadowsField;
  1505.     attrControlGrp -edit -enable $useRT rayTraceBiasField;
  1506. }
  1507.  
  1508. global proc updateMotionBlur ()
  1509. //
  1510. //  Procedure Name:
  1511. //      updateMotionBlur
  1512. //
  1513. //  Description:
  1514. //      Gets the real values from the nodes and sets the UI based
  1515. //        on these values.  This procedure updates all of the motion
  1516. //        blur values.
  1517. //
  1518.     int $useBlur = `getAttr defaultRenderGlobals.motionBlur`;
  1519.     // checkBoxGrp -edit -v1 $useBlur blurCheck;
  1520.  
  1521.     int $blur2d = (`getAttr defaultRenderGlobals.motionBlurType` == 0);
  1522.     if ($blur2d) {
  1523.         radioButtonGrp -edit -select 1 blurButton1;
  1524.     } else {
  1525.         radioButtonGrp -edit -select 1 blurButton2;
  1526.     }
  1527.  
  1528.     radioButtonGrp -edit -enable $useBlur blurButton1;
  1529.     radioButtonGrp -edit -enable $useBlur blurButton2;
  1530.  
  1531.     int $keepMotionVector = (`getAttr defaultRenderGlobals.keepMotionVector` == 1);
  1532.     if ($useBlur && $blur2d && $keepMotionVector) {
  1533.         global string $imgExt[];  // This is the actual file extension
  1534.         global int $imgExtNum[];  // This is the corresponding internal value
  1535.  
  1536.         string $imageFormatExt = "";
  1537.  
  1538.         int $imageFormatNum = `getAttr defaultRenderGlobals.imageFormat`;
  1539.  
  1540.         // Get the corresponding imgExt for this imageFormat.
  1541.  
  1542.         for ($i = 0; $i < size($imgExtNum); $i += 1) {
  1543.             if ($imageFormatNum == $imgExtNum[$i]) {
  1544.                 $imageFormatExt = $imgExt[$i];
  1545.                 break;
  1546.             }
  1547.         }
  1548.  
  1549.         // Check if the image format is not IFF.
  1550.         //
  1551.         // Note: there are two IFF image types. One for 8 bit images
  1552.         // and one for 16 bit images. They both have an imgExt of iff.
  1553.  
  1554.         if ($imageFormatExt != "iff" ) {
  1555.             warning
  1556.                 ("Non-IFF image formats are not supported when writing"+
  1557.                  " 2D motion vectors; setting image format to IFF");
  1558.  
  1559.             // Set globals imageFormat to Maya IFF
  1560.             setAttr defaultRenderGlobals.imageFormat 7;
  1561.         }
  1562.     }
  1563.  
  1564.     attrControlGrp -edit -enable $useBlur blurFrameField;
  1565.  
  1566.     attrControlGrp -edit -enable ($useBlur && $blur2d) blurLengthField;
  1567.  
  1568.     attrControlGrp -edit -enable ($useBlur && $blur2d) blurSharpField;
  1569.  
  1570.     attrControlGrp -edit -enable ($useBlur && $blur2d) blurSmoothField;
  1571.  
  1572.     int $smoothColor = `getAttr defaultRenderGlobals.smoothColor`;
  1573.     radioButtonGrp -edit
  1574.         -enable ($useBlur && $blur2d)
  1575.         -select ($smoothColor + 1)
  1576.         blurSmoothRadio;
  1577.  
  1578.     attrControlGrp -edit -enable ($useBlur && $blur2d) blurVectorCheck;
  1579.  
  1580.     if(!`about -mac`){
  1581.         int $useMemoryCap = `getAttr defaultRenderGlobals.useBlur2DMemoryCap`;
  1582.        attrControlGrp -edit 
  1583.             -enable ($useBlur && $blur2d) blurMemoryCapCheck;
  1584.  
  1585.        attrControlGrp -edit
  1586.             -enable ($useBlur && $blur2d && $useMemoryCap)  
  1587.             blurMemoryCapField;
  1588.     }
  1589.  
  1590. }
  1591.  
  1592. global proc updateMayaSoftwareNumCpusSlider(int $value)
  1593. //
  1594. //  Procedure Name:
  1595. //      updateMayaSoftwareNumCpusSlider
  1596. //
  1597. //  Description:
  1598. //      When the controls for the number of CPUs are updated this
  1599. //      procedure will be invoked. The check box, field and slider
  1600. //      will be update to reflect the new value. If the value is
  1601. //      zero, all CPUs will be used.
  1602. //
  1603. {
  1604.     if ( `about -evalVersion` )
  1605.     {
  1606.         int $numOfCpus = `getAttr defaultRenderGlobals.numCpusToUse`;
  1607.         if ($numOfCpus != 1)
  1608.         {
  1609.             warning( "Maya Personal Learning Edition limits rendering to a single CPU");
  1610.             checkBoxGrp -e -enable false -value1 false numCpusCheckBox;
  1611.             attrControlGrp -e -enable false numCpusSlider;
  1612.             setAttr defaultRenderGlobals.numCpusToUse 1;
  1613.         }
  1614.         return;
  1615.     }
  1616.  
  1617.     if ($value == 0) {
  1618.         checkBoxGrp -e -value1 true numCpusCheckBox;
  1619.  
  1620.         attrControlGrp -e -enable false numCpusSlider;
  1621.     }
  1622.     else {
  1623.         checkBoxGrp -e -value1 false numCpusCheckBox;
  1624.  
  1625.         attrControlGrp -e -enable true numCpusSlider;
  1626.  
  1627.         if (`iprEngine -query -exists defaultIprEngine`) {
  1628.             warning -showLineNumber false
  1629.                 ("IPR will need to be closed before this change in CPUs will"+
  1630.                 " take effect.");
  1631.         }
  1632.     }
  1633. }
  1634.  
  1635. global proc updateIPROptions ()
  1636. //
  1637. //  Procedure Name:
  1638. //      updateIPROptions
  1639. //
  1640. //  Description:
  1641. //      Gets the real values from the option vars and sets the UI based
  1642. //        on these values.  This procedure updates all of the IPR
  1643. //        values.
  1644. //
  1645.     int $doShading = `optionVar -query iprRenderShading`;
  1646.     checkBoxGrp -edit -v1 $doShading iprShadingCheck;
  1647.     checkBoxGrp -edit -v1 `optionVar -query iprRenderShadowMaps` 
  1648.         -enable $doShading iprShadowCheck;
  1649.     checkBoxGrp -edit -v1 `optionVar -query iprRenderMotionBlur` ipr2DBlurCheck;
  1650. }
  1651.  
  1652. // Description: This procedure is used to update the IPR Shading Option
  1653. //      control.
  1654. //
  1655. global proc updateIPRShadingOptionVar()
  1656. {
  1657.     int $doShading = `checkBoxGrp -q -v1 iprShadingCheck`;
  1658.     optionVar -intValue iprRenderShading $doShading;
  1659.     checkBoxGrp -edit -enable $doShading iprShadowCheck;
  1660. }
  1661.  
  1662. // Description: This procedure is used to update the IPR Shadow Option
  1663. //      control.
  1664. //
  1665. global proc updateIPRShadowOptionVar()
  1666. {
  1667.     int $doShadows = `checkBoxGrp -q -v1 iprShadowCheck`;
  1668.     optionVar -intValue iprRenderShadowMaps $doShadows;
  1669. }
  1670.  
  1671. // Description: This procedure is used to update the 2D Blur Option 
  1672. //      control.
  1673. //
  1674. global proc updateIPR2dBlurOptionVar()
  1675. {
  1676.     int $doBlur = `checkBoxGrp -q -v1 ipr2DBlurCheck`;
  1677.     optionVar -intValue iprRenderMotionBlur $doBlur;
  1678. }
  1679.  
  1680. global proc updateUrchinOptions ()
  1681. //
  1682. //  Procedure Name:
  1683. //      updateUrchinOptions
  1684. //
  1685. //  Description:
  1686. //      Gets the real values from the nodes and sets the UI based
  1687. //        on these values.  This procedure updates all of the memory
  1688. //        and performance values. I guess hard-coding the render globals
  1689. //      name is okay until we handle multiple nodes, and since every
  1690. //      other routine in this file makes that assumption, so will I.
  1691. //
  1692.     
  1693.     string $strokesFile = `getAttr defaultRenderGlobals.strokesDepthFile`;
  1694.     textFieldGrp -edit 
  1695.         -fileName $strokesFile 
  1696.         depthStrokesCheck;
  1697.  
  1698.     // Now update the UI greyed/enabled state.
  1699.     int $value1 = `getAttr defaultRenderGlobals.enableStrokeRender`;
  1700.     if ($value1 == 1) {
  1701.         int $value2 = `getAttr defaultRenderGlobals.onlyRenderStrokes`;
  1702.         int $value3 = `getAttr defaultRenderGlobals.oversamplePaintEffects`;
  1703.         if ($value2 == 1) {
  1704.             textFieldGrp -edit -en true depthStrokesCheck;
  1705.         }
  1706.         else {
  1707.             textFieldGrp -edit -en false depthStrokesCheck;
  1708.         }
  1709.  
  1710.         if ($value3 == 1)
  1711.         {
  1712.             attrControlGrp -edit -enable true oversamplePfxPostFilterCheck;
  1713.         }   
  1714.         else    
  1715.         {
  1716.             attrControlGrp -edit -enable false oversamplePfxPostFilterCheck;
  1717.         }
  1718.  
  1719.         attrControlGrp -edit -enable true onlyStrokesCheck;
  1720.         attrControlGrp -edit -enable true oversamplePaintEffectsCheck; 
  1721.  
  1722.        } else {
  1723.            textFieldGrp -edit -en false depthStrokesCheck;
  1724.         attrControlGrp -edit -enable false  onlyStrokesCheck;
  1725.         attrControlGrp -edit -enable false  oversamplePaintEffectsCheck;
  1726.         attrControlGrp -edit -enable false  oversamplePfxPostFilterCheck;
  1727.  
  1728.     }
  1729. }
  1730.  
  1731. // Description: This procedure is called to set the
  1732. //  defaultRenderGlobals.strokeDepthFile value.
  1733. //
  1734. global proc setRenderGlobalsDepthFile()
  1735. {
  1736.     setAttr defaultRenderGlobals.strokesDepthFile -type "string"
  1737.         `textFieldGrp -q -fileName depthStrokesCheck`;
  1738. }
  1739.  
  1740. global proc mayaSoftwareGlobalsRevertToDefault()
  1741. {
  1742.     //
  1743.     // Description:
  1744.     //    This procedure is called when the user chooses Default Settings from
  1745.     //    the Presets->Load Preset menu.
  1746.     //    This procedure performs setAttrs on the attributes of the
  1747.     //    defaultRenderGlobals, defaultResolution and defaultRenderQuality nodes
  1748.     //    to set them to their default values.
  1749.     //    This procedure does not attempt to deal with resolution or quality
  1750.     //    nodes other than the two default nodes. In the future, this procedure
  1751.     //    will be replaced by functionality in the nodePreset command that can
  1752.     //    set an arbitrary node back to its default values.
  1753.     //
  1754.  
  1755.     // Set defaultRenderGlobals to default values
  1756.     //
  1757.     setAttr "defaultRenderGlobals.caching" no;
  1758.     setAttr "defaultRenderGlobals.isHistoricallyInteresting" 2;
  1759.     setAttr "defaultRenderGlobals.nodeState" 0;
  1760.     setAttr "defaultRenderGlobals.renderAll" yes;
  1761.     setAttr "defaultRenderGlobals.ignoreFilmGate" yes;
  1762.     setAttr "defaultRenderGlobals.clipFinalShadedColor" yes;
  1763.     setAttr "defaultRenderGlobals.enableDepthMaps" yes;
  1764.     setAttr "defaultRenderGlobals.enableDefaultLight" yes;
  1765.     setAttr "defaultRenderGlobals.enableStrokeRender" yes;
  1766.     setAttr "defaultRenderGlobals.oversamplePaintEffects" no;
  1767.     setAttr "defaultRenderGlobals.oversamplePfxPostFilter" no;
  1768.     setAttr "defaultRenderGlobals.onlyRenderStrokes" no;
  1769.     setAttr "defaultRenderGlobals.strokesDepthFile" -type "string" "";
  1770.     setAttr "defaultRenderGlobals.imageFormat" 7;
  1771.     setAttr "defaultRenderGlobals.pluginFormat" -type "string" "";
  1772.     setAttr "defaultRenderGlobals.gammaCorrection" 1;
  1773.     setAttr "defaultRenderGlobals.topRegion" 256;
  1774.     setAttr "defaultRenderGlobals.leftRegion" 0;
  1775.     setAttr "defaultRenderGlobals.bottomRegion" 0;
  1776.     setAttr "defaultRenderGlobals.rightRegion" 256;
  1777.     setAttr "defaultRenderGlobals.useRenderRegion" no;
  1778.     setAttr "defaultRenderGlobals.animation" no;
  1779.     setAttr "defaultRenderGlobals.animationRange" 1;
  1780.     setAttr "defaultRenderGlobals.startFrame" 1;
  1781.     setAttr "defaultRenderGlobals.endFrame" 10;
  1782.     setAttr "defaultRenderGlobals.byFrame" 1;
  1783.     setAttr "defaultRenderGlobals.byFrameStep" 1;
  1784.     setAttr "defaultRenderGlobals.modifyExtension" no;
  1785.     setAttr "defaultRenderGlobals.startExtension" 1;
  1786.     setAttr "defaultRenderGlobals.byExtension" 1;
  1787.     setAttr "defaultRenderGlobals.extensionPadding" 1;
  1788.     setAttr "defaultRenderGlobals.fieldExtControl" 0;
  1789.     setAttr "defaultRenderGlobals.stereoExtControl" 0;
  1790.     setAttr "defaultRenderGlobals.outFormatControl" 0;
  1791.     setAttr "defaultRenderGlobals.oddFieldExt" -type "string" "";
  1792.     setAttr "defaultRenderGlobals.evenFieldExt" -type "string" "";
  1793.     setAttr "defaultRenderGlobals.leftStereoExt" -type "string" "";
  1794.     setAttr "defaultRenderGlobals.rightStereoExt" -type "string" "";
  1795.     setAttr "defaultRenderGlobals.outFormatExt" -type "string" "";
  1796.     setAttr "defaultRenderGlobals.useMayaFileName" yes;
  1797.     setAttr "defaultRenderGlobals.useFrameExt" no;
  1798.     setAttr "defaultRenderGlobals.putFrameBeforeExt" no;
  1799.     setAttr "defaultRenderGlobals.imageFilePrefix" -type "string" "";
  1800.     setAttr "defaultRenderGlobals.periodInExt" yes;
  1801.     setAttr "defaultRenderGlobals.composite" no;
  1802.     setAttr "defaultRenderGlobals.compositeThreshold" 0;
  1803.     setAttr "defaultRenderGlobals.shadowsObeyLightLinking" yes;
  1804.     setAttr "defaultRenderGlobals.recursionDepth" 2;
  1805.     setAttr "defaultRenderGlobals.leafPrimitives" 200;
  1806.     setAttr "defaultRenderGlobals.subdivisionPower" 0.25;
  1807.     setAttr "defaultRenderGlobals.subdivisionHashSize" 5;
  1808.     setAttr "defaultRenderGlobals.logRenderPerformance" no;
  1809.     setAttr "defaultRenderGlobals.geometryVector" 20;
  1810.     setAttr "defaultRenderGlobals.shadingVector" 60;
  1811.     setAttr "defaultRenderGlobals.maximumMemory" 48;
  1812.     setAttr "defaultRenderGlobals.numCpusToUse" 0;
  1813.     setAttr "defaultRenderGlobals.shadowPass" no;
  1814.     setAttr "defaultRenderGlobals.iprShadowPass" no;
  1815.     setAttr "defaultRenderGlobals.useFileCache" yes;
  1816.     setAttr "defaultRenderGlobals.optimizeInstances" yes;
  1817.     setAttr "defaultRenderGlobals.reuseTessellations" yes;
  1818.     setAttr "defaultRenderGlobals.motionBlur" no;
  1819.     setAttr "defaultRenderGlobals.motionBlurByFrame" 1;
  1820.     setAttr "defaultRenderGlobals.applyFogInPost" no;
  1821.     setAttr "defaultRenderGlobals.postFogBlur" 1;
  1822.     if(!`about -evalVersion`)
  1823.     {
  1824.         setAttr "defaultRenderGlobals.preRenderMel" -type "string" "";
  1825.         setAttr "defaultRenderGlobals.postRenderMel" -type "string" "";
  1826.     }
  1827.     setAttr "defaultRenderGlobals.preFurRenderMel" -type "string" "";
  1828.     setAttr "defaultRenderGlobals.postFurRenderMel" -type "string" "";
  1829.     setAttr "defaultRenderGlobals.createIprFile" no;
  1830.     setAttr "defaultRenderGlobals.blurLength" 1;
  1831.     setAttr "defaultRenderGlobals.blurSharpness" 1;
  1832.     setAttr "defaultRenderGlobals.smoothValue" 2;
  1833.     setAttr "defaultRenderGlobals.useBlur2DMemoryCap" yes;
  1834.     setAttr "defaultRenderGlobals.blur2DMemoryCap" 200;
  1835.     setAttr "defaultRenderGlobals.motionBlurType" 1;
  1836.     setAttr "defaultRenderGlobals.useDisplacementBoundingBox" yes;
  1837.     setAttr "defaultRenderGlobals.smoothColor" no;
  1838.     setAttr "defaultRenderGlobals.keepMotionVector" no;
  1839.     setAttr "defaultRenderGlobals.iprRenderShading" yes;
  1840.     setAttr "defaultRenderGlobals.iprRenderShadowMaps" yes;
  1841.     setAttr "defaultRenderGlobals.iprRenderMotionBlur" yes;
  1842.     setAttr "defaultRenderGlobals.renderLayerEnable" no;
  1843.     setAttr "defaultRenderGlobals.renderLayerPassEnable" no;
  1844.     setAttr "defaultRenderGlobals.renderGlobalPassEnable" no;
  1845.     setAttr "defaultRenderGlobals.renderLayerSubdirs" no;
  1846.     setAttr "defaultRenderGlobals.forceTileSize" no;
  1847.     setAttr "defaultRenderGlobals.tileWidth" 64;
  1848.     setAttr "defaultRenderGlobals.tileHeight" 64;
  1849.  
  1850.     // Set defaultRenderQuality to default values
  1851.     //
  1852.     setAttr "defaultRenderQuality.caching" no;
  1853.     setAttr "defaultRenderQuality.isHistoricallyInteresting" 2;
  1854.     setAttr "defaultRenderQuality.nodeState" 0;
  1855.     setAttr "defaultRenderQuality.reflections" 1;
  1856.     setAttr "defaultRenderQuality.refractions" 6;
  1857.     setAttr "defaultRenderQuality.shadows" 2;
  1858.     setAttr "defaultRenderQuality.rayTraceBias" 0;
  1859.     setAttr "defaultRenderQuality.edgeAntiAliasing" 3;
  1860.     setAttr "defaultRenderQuality.renderSample" no;
  1861.     setAttr "defaultRenderQuality.useMultiPixelFilter" no;
  1862.     setAttr "defaultRenderQuality.pixelFilterType" 2;
  1863.     setAttr "defaultRenderQuality.pixelFilterWidthX" 2.2000000476837158;
  1864.     setAttr "defaultRenderQuality.pixelFilterWidthY" 2.2000000476837158;
  1865.     setAttr "defaultRenderQuality.plugInFilterWeight" 1;
  1866.     setAttr "defaultRenderQuality.shadingSamples" 1;
  1867.     setAttr "defaultRenderQuality.maxShadingSamples" 8;
  1868.     setAttr "defaultRenderQuality.visibilitySamples" 1;
  1869.     setAttr "defaultRenderQuality.maxVisibilitySamples" 4;
  1870.     setAttr "defaultRenderQuality.volumeSamples" 1;
  1871.     setAttr "defaultRenderQuality.particleSamples" 1;
  1872.     setAttr "defaultRenderQuality.enableRaytracing" no;
  1873.     setAttr "defaultRenderQuality.redThreshold" 0.40000000596046448;
  1874.     setAttr "defaultRenderQuality.greenThreshold" 0.30000001192092896;
  1875.     setAttr "defaultRenderQuality.blueThreshold" 0.60000002384185791;
  1876.     setAttr "defaultRenderQuality.coverageThreshold" 0.125;
  1877.  
  1878.     // Set defaultResolution to default values
  1879.     //
  1880.     setAttr "defaultResolution.caching" no;
  1881.     setAttr "defaultResolution.isHistoricallyInteresting" 2;
  1882.     setAttr "defaultResolution.nodeState" 0;
  1883.     setAttr "defaultResolution.width" 320;
  1884.     setAttr "defaultResolution.height" 240;
  1885.     setAttr "defaultResolution.pixelAspect" 0;
  1886.     setAttr "defaultResolution.aspectLock" no;
  1887.     setAttr "defaultResolution.deviceAspectRatio" 1.3333300352096558;
  1888.     setAttr "defaultResolution.lockDeviceAspectRatio" no;
  1889.     setAttr "defaultResolution.oddFieldFirst" yes;
  1890.     setAttr "defaultResolution.fields" 0;
  1891.     setAttr "defaultResolution.zerothScanline" 0;
  1892. }
  1893.  
  1894. // Description:  This procedure is called to update all the frames
  1895. //      in the mayaSoftware software render globals tab.
  1896. //
  1897. global proc updateMayaSoftwareGlobalsTab()
  1898. {
  1899.     updateFileOutputFeedback;
  1900.     if (`frameLayout -q -cl mayaSoftwareQualityFrame` == 0) {
  1901.         updateRenderQuality;
  1902.     }
  1903.     if (`frameLayout -q -cl rgRayTraceFrame` == 0) {
  1904.         updateRaytraceQuality;
  1905.     }
  1906.     if (`frameLayout -q -cl rgFieldOptionsFrame` == 0) {
  1907.         updateFieldOptions;
  1908.     }
  1909.     if (`frameLayout -q -cl rgBlurFrame` == 0) {
  1910.         updateMotionBlur;
  1911.     }
  1912.     if (`frameLayout -q -cl rgIPRFrame` == 0) {
  1913.         updateIPROptions;
  1914.     }
  1915.     if (`frameLayout -q -cl rgRenderLayerFrame` == 0) {
  1916.         updateRenderLayerOptionsUI("mayaSoftware");
  1917.     }
  1918.     if (`isTrue MayaCreatorExists`) {
  1919.         if (`frameLayout -q -cl rgUrchinFrame` == 0) {
  1920.             updateUrchinOptions;
  1921.         }
  1922.     }
  1923. }
  1924.